Wake On Lan 實作心得


Posted by 孫胖 on 2023-02-03

紀錄一下這幾天設定 wake on lan 的重點,以免自己之後回來又忘記。

前情提要

之前已經設定好 Linux Mint 的 VNC 了,現在只要一開機就會自動啟動 VNC,然後我們就可以用 VNC Viewer 連進去,不過一直讓電腦處於開機狀態似乎是很吵又很浪費電的一件事情,所以我希望只有我要用的時候再讓它開機就好,這時候使用 Wake On Lan 就是一個很棒的解決方法。

Wake On Lan 是什麼?

顧名思義,就是利用網路喚醒機器,以下簡稱 wol。

wol server

一台常駐開機的設備,負責傳送 Magic Packet,我們就是透過它來喚醒機器。

wol client

需要被喚醒的機器,負責接收 Magic Packet。

設備

  • 樹梅派 -> wol server
  • sun (Linux Mint) -> wol client

使用到的工具

  • Terminus: 用於 SSH 連線
  • Deco: 固定 wol client (sun) ip address 以及透過外部 Port 導向至內部 ip
  • remoteit: 讓 wol server (樹梅派) 啟動
  • VNC Viewer: 用於測試 sun 是否開機成功

開始

首先透過 remoteit 啟動 wol server (樹梅派)

使用 SSH 連進去

接著安裝 wakeonlan

sudo apt install wakeonlan

這樣就可以了,暫時先離開,等等再回來發送 Magic Packet


要先確認主機板是否支援 Wake On Lan 喔~

如果有支援,記得要去 BIOS 開啟功能

接下來用 SSH 連進 wol client (sun)

安裝 ethtool

sudo apt install ethtool

查看網卡名稱

ip a

OUTPUT

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:60:6e:6e:c7:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.68.115/24 brd 192.168.68.255 scope global dynamic noprefixroute enp3s0
       valid_lft 6941sec preferred_lft 6941sec
    inet6 ::1014/128 scope global dynamic noprefixroute
       valid_lft 86144sec preferred_lft 86144sec
    inet6 fe80::ca8a:e292:99e0:781c/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

可以看到我這邊的網卡名稱是 enp3s0

然後 MAC ADDRESS 是 08:60:6e:6e:c7:eb (記起來,等下會用到)

接下來查看 wol 的啟用狀態

sudo ethtool enp3s0 # 將 enp3s0 改成你自己的網卡名稱

OUTPUT

Settings for enp3s0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 100Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: slave
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: external
        MDI-X: Unknown
        Supports Wake-on: pumbg
        Wake-on: g
        Link detected: yes

可以看到 Wake-on 目前是 g

如果你是 d (disable) 的話,可以透過以下指令將其開啟

sudo ethtool -s enp3s0 wol g

這樣就設定好了,可以使用以下指令讓機器休眠

sudo pm-hibernate

接下來回到 wol server (樹梅派)

wakeonlan 08:60:6e:6e:c7:eb # 記得改成你自己的 wol client MAC ADDRESS

OUTPUT

Sending magic packet to 255.255.255.255:9 with 08:60:6e:6e:c7:eb

如果成功,你的機器現在就會啟動了~

補充

由於 Wake-On 的設定重開機就會變回 d (disable)

所以我們可以透過 rc local 讓他在開機的時候自動啟動

sudo vim /etc/rc.local

輸入以下內容

#!/bin/bash
sleep 5
ethtool -s enp3s0 wol g

存檔離開之後再更改權限

sudo chmod a+x /etc/rc.local

接下來使用 systemd 開啟 rc-local

sudo systemctl enable rc-local.service # 在開機的時候自動啟動服務
sudo systemctl start rc-local.service # 現在啟動服務

筆記 for myself

Deco 注意事項

固定 wol client (sun) ip address --> 位置保留

透過外部 Port 導向至內部 ip --> NAT 導向


#Wake On Lan #linux







Related Posts

BindingAdapter(use in recyclerView)

BindingAdapter(use in recyclerView)

.Net MVC authorization Controller and Workcontext extension in razor view

.Net MVC authorization Controller and Workcontext extension in razor view

Day 136

Day 136


Comments